package main

import (
	"sort"
	"strings"
)

// 49. 字母异位词分组
func main() {
	strs := []string{"eat", "tea", "tan", "ate", "nat", "bat"}
	res := groupAnagrams(strs)

	for _, i := range res {
		for _, si := range i {
			print(si, ",")
		}
		println()
	}
}

func groupAnagrams(strs []string) [][]string {
	resMap := make(map[string][]string)
	for _, str := range strs {
		split := strings.Split(str, "")
		sort.Strings(split)
		joinSplit := strings.Join(split, "")

		resMap[joinSplit] = append(resMap[joinSplit], str)
	}
	var res [][]string
	for _, v := range resMap {
		res = append(res, v)
	}
	return res
}

// 49. 字母异位词分组
//已解答
//中等
//相关标签
//相关企业
//给你一个字符串数组，请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
//
//字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
//
//
//
//示例 1:
//
//输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
//输出: [["bat"],["nat","tan"],["ate","eat","tea"]]
//示例 2:
//
//输入: strs = [""]
//输出: [[""]]
//示例 3:
//
//输入: strs = ["a"]
//输出: [["a"]]
//
//
//提示：
//
//1 <= strs.length <= 104
//0 <= strs[i].length <= 100
//strs[i] 仅包含小写字母
